package com.example.casserver.config;

import com.example.casserver.entity.User;
import com.example.casserver.service.UserService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * 初始数据配置类
 * 用于在应用启动时初始化测试用户数据
 */
@Configuration
public class InitialDataConfig {

    /**
     * 初始化测试用户数据
     * 创建两个测试账号：
     * 1. admin/123456 - 管理员账号
     * 2. user/123456 - 普通用户账号
     *
     * @param userService     用户服务
     * @param passwordEncoder 密码编码器
     * @return CommandLineRunner
     */
    @Bean
    public CommandLineRunner initializeData(UserService userService, PasswordEncoder passwordEncoder) {
        return args -> {
            // 创建管理员账号
            if (userService.findByUsername("admin") == null) {
                User admin = new User();
                admin.setUsername("admin");
                admin.setPassword(passwordEncoder.encode("123456"));
                admin.setEmail("admin@example.com");
                admin.setEnabled(true);
                userService.saveUser(admin);
            }

            // 创建普通用户账号
            if (userService.findByUsername("user") == null) {
                User user = new User();
                user.setUsername("user");
                user.setPassword(passwordEncoder.encode("123456"));
                user.setEmail("user@example.com");
                user.setEnabled(true);
                userService.saveUser(user);
            }
        };
    }
} 